package com._520it.crm.mapper;

import com._520it.crm.domain.Client;
import com._520it.crm.query.QueryObject;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
@Repository
public interface ClientMapper {
    int deleteByPrimaryKey(Long id);

    int insert(Client client);

    Client selectByPrimaryKey(Long id);

    List<Client> selectAll();

    int updateByPrimaryKey(Client client);

    /**
     *
     * @param qo 高级查询的参数
     * @return 返回查询的结果数
     */
    Integer queryforCount(QueryObject qo);

    /**
     *
     * @param qo 高级查询参数
     * @return 返回查询的结果集 集合
     */
    List<Client> queryforList(QueryObject qo);

    /**
     *
     * @param idCardType 客户的证件类型
     * @param idCardNumber 客户的证件号码
     * @return 返回查到的客户对象
     */
    Client selectClient(@Param("idCardType") Integer idCardType, @Param("idCardNumber") String idCardNumber);

    /**
     * 跟新投保单的被保人 身份证信息
     * @param idCardNumber 被保人身份证信息
     * @param applyClientCardNumber 投保人身份证信息
     */
    void updataRecognizeeIdNumber(@Param("idCardNumber") String idCardNumber, @Param("applyClientCardNumber") String applyClientCardNumber);



    /**
     *员工的更新方法重写
     * @param client 被更新的员工
     * @return
     */
    int updateByPrimaryClient(Client client);

    /**
     *
     * @param id 被改变状态的员工的id
     * @param formalClient 改变的状态
     */
    void changeFormalClientById(@Param("clientId") Long id, @Param("statusForFormalClient") Integer formalClient);

    /**
     *
     * @param qo 高级查询的参数
     * @return 返回查询的结果数
     */
    Integer employeeQueryforCount(QueryObject qo);

    /**
     *
     * @param qo 高级查询参数
     * @return 返回查询的结果集 集合
     */
    List<Client> employeeQueryforList(QueryObject qo);

    /**
     *
     * @param clientId 被移交的客户的id
     * @param princiUser    被移交前的负责人的值
     */
    void transferById(@Param("clientId") Long clientId,@Param("princiUserId") Long princiUser);

    /**
     * 根据前台传过来的保单id查询 申请人
     * @param id 保单id
     * @return
     */
    Client selectApplyClient(Long id);
    /**
     * 根据前台传过来的保单id查询 被保人信息
     * @param id 保单id
     * @return
     */
    Client selectRecognizee(Long id);
    /**
     * 根据前台传过来的保单id查询 车主
     * @param id 保单id
     * @return
     */
    Client selectCarOwner(Long id);
}